require(['./config'], () => {
    require(['template','url','header'], (template,url) => {
        class Reg {
            constructor () {
                this.addheader()
                this.addfooter()
                this.usersreg()
                this.setcanvas()
            }
            addheader(){
                $('header').load('../html/header.html')
            }
            addfooter(){
                $('footer').load('../html/footer.html')
            }
            setcanvas(){
                
                   this.show_num = [];
                    draw(this.show_num);
                    //点击随机生成验证码
                    $("#canvas").on('click',() =>{
                       draw(this.show_num);
                    })
                   //生成并渲染出验证码图形
                   function draw(show_num) {
                    var canvas_width=$('#canvas').width();
                    var canvas_height=$('#canvas').height();
                    var canvas = document.getElementById("canvas");//获取到canvas的对象，演员
                    var context = canvas.getContext("2d");//获取到canvas画图的环境，演员表演的舞台
                    canvas.width = canvas_width;
                    canvas.height = canvas_height;
                    var sCode = "a,b,c,d,e,f,g,h,i,j,k,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,E,F,G,H,J,K,L,M,N,P,Q,R,S,T,W,X,Y,Z,1,2,3,4,5,6,7,8,9,0";
                    var aCode = sCode.split(",");
                    var aLength = aCode.length;//获取到数组的长度
                    for (var i = 0; i < 4; i++) { //这里的for循环可以控制验证码位数（如果想显示6位数，4改成6即可）
                     var j = Math.floor(Math.random() * aLength);//获取到随机的索引值
                     // var deg = Math.random() * 30 * Math.PI / 180;//产生0~30之间的随机弧度
                     var deg = Math.random() - 0.5; //产生一个随机弧度
                     var txt = aCode[j];//得到随机的一个内容
                     show_num[i] = txt.toLowerCase();
                     var x = 10 + i * 20;//文字在canvas上的x坐标
                     var y = 20 + Math.random() * 8;//文字在canvas上的y坐标
                     context.font = "bold 23px 微软雅黑";
                     context.translate(x, y);
                     context.rotate(deg);
                     context.fillStyle = randomColor();
                     context.fillText(txt, 0, 0);
                     context.rotate(-deg);
                     context.translate(-x, -y);
                    }
                    for (var i = 0; i <= 5; i++) { //验证码上显示线条
                     context.strokeStyle = randomColor();
                     context.beginPath();
                     context.moveTo(Math.random() * canvas_width, Math.random() * canvas_height);
                     context.lineTo(Math.random() * canvas_width, Math.random() * canvas_height);
                     context.stroke();
                    }
                    for (var i = 0; i <= 30; i++) { //验证码上显示小点
                     context.strokeStyle = randomColor();
                     context.beginPath();
                     var x = Math.random() * canvas_width;
                     var y = Math.random() * canvas_height;
                     context.moveTo(x, y);
                     context.lineTo(x + 1, y + 1);
                     context.stroke();
                    }
                   }
                   //得到随机的颜色值
                   function randomColor() {
                    var r = Math.floor(Math.random() * 256);
                    var g = Math.floor(Math.random() * 256);
                    var b = Math.floor(Math.random() * 256);
                    return "rgb(" + r + "," + g + "," + b + ")";
                   }
            }
            usersreg(){
                let _this=this
                $('.btn').on('click',function(){

                let phone = $('.phone').val(),//设置电话号码
                    passone = $('.passone').val(),//设置密码
                    passtwo = $('.passtwo').val(),//确认密码
                    valnum = $(".input-val").val().toLowerCase(), //输入的验证码
                    num =  _this.show_num.join("")//验证码
                   
                    var Reg=/^1\d{10}$/;//以1打头，11位
                    //判断电话号码
                    if(Reg.test(phone)){
                        //判断密码
                        if(passone !== passtwo){
                            alert("请输入正确的密码!");
                            $('.passtwo').val("");
                        }else{
                             //判断验证码
                            if(valnum==''){
                                alert('请输入验证码！');
                            }else if(valnum == num){
                               //判断是否勾选协议
                                if($('.sour').prop('checked')){
                                    //先获取用户
                                    let user = localStorage.getItem('user')
                                    //如果有，先取出,再push，再存入
                                    if(user){
                                        user = JSON.parse(user)
                                        user.push({phone,passone})
                                        localStorage.setItem('user',JSON.stringify(user))
                                    //如果没有，直接存入
                                    }else{
                                        localStorage.setItem('user',JSON.stringify([{phone,passone}]))
                                    }
                                    alert("注册成功，请登录！")
                                    //清空input框
                                    $('.phone,.passone,.passtwo,.input-val').val("");
                                    $('.sour').prop('checked','')
                                    window.location.replace('./log.html')
                                }else{
                                    alert('请仔细阅读协议！');
                                }
                             
                            }else{
                                alert('验证码错误！请重新输入！');
                                $(".input-val").val('');
                            }
                         }
                       
                    }
                    else{
                        alert("请输入正确的电话号码");
                        $('.phone').val("");
                    }
                })
            }
        }
        new Reg()
    })
})